Mô tả mức cao của thuật toán Advanced Encryption Standard

Mở rộng khóa (KeyExpansion)

Là quá trình tạo các vòng khóa từ khóa chính, mỗi khóa con chứa 4 byte.

Quá trình mã hóa

Bao gồm các bước:

  1. Khởi động vòng lặp
    1. AddRoundKey — Mỗi cột của trạng thái đầu tiên lần lượt được kết hợp với một khóa con theo thứ tự từ đầu dãy khóa.
  2. Vòng lặp
    1. SubBytes — đây là phép thế (phi tuyến) trong đó mỗi byte trong trạng thái sẽ được thế bằng một byte khác theo bảng tra (Rijndael S-box).
    2. ShiftRows — dịch chuyển, các hàng trong trạng thái được dịch vòng theo số bước khác nhau.
    3. MixColumns — quá trình trộn làm việc theo các cột trong khối theo một phép biến đổi tuyến tính.
    4. AddRoundKey
  3. Vòng lặp cuối
    1. SubBytes
    2. ShiftRows
    3. AddRoundKey

Tại chu trình cuối thì bước MixColumns không thực hiện.

Bước SubBytes

Các byte được thế thông qua bảng tra S-box. Đây chính là quá trình phi tuyến của thuật toán. Hộp S-box này được tạo ra từ một phép biến đổi khả nghịch trong trường hữu hạn GF (28) có tính chất phi tuyến. Để chống lại các tấn công dựa trên các đặc tính đại số, hộp S-box này được tạo nên bằng cách kết hợp phép nghịch đảo với một phép biến đổi affine khả nghịch. Hộp S-box này cũng được chọn để tránh các điểm bất động (fixed point).

Xem thêm: Rijndael S-box.

Bước ShiftRows

Các hàng được dịch vòng một số bước nhất định. Đối với AES, hàng đầu được giữ nguyên. Mỗi byte của hàng thứ 2 được dịch vòng trái một vị trí. Tương tự, các hàng thứ 3 và 4 được dịch vòng 2 và 3 vị trí. Do vậy, mỗi cột khối đầu ra của bước này sẽ bao gồm các byte ở đủ 4 cột khối đầu vào. Đối với Rijndael với độ dài khối khác nhau thì số vị trí dịch chuyển cũng khác nhau.

Bước MixColumns

Bốn byte trong từng cột được kết hợp lại theo một phép biến đổi tuyến tính khả nghịch. Mỗi khối 4 byte đầu vào sẽ cho một khối 4 byte ở đầu ra với tính chất là mỗi byte ở đầu vào đều ảnh hưởng tới cả bốn byte đầu ra. Cùng với bước ShiftRows, MixColumns đã tạo ra tính chất khuếch tán cho thuật toán. Mỗi cột được xem như một đa thức trong trường hữu hạn và được nhân với đa thức c ( x ) = 3 x 3 + x 2 + x + 2 {\displaystyle c(x)=3x^{3}+x^{2}+x+2} (modulo x 4 + 1 {\displaystyle x^{4}+1} ). Vì thế, bước này có thể được xem là phép nhân ma trận trong trường hữu hạn.

Bước AddRoundKey

Tại bước này, khóa con được kết hợp với các khối. Khóa con trong mỗi chu trình được tạo ra từ khóa chính với quá trình tạo khóa con Rijndael; mỗi khóa con có độ dài giống như các khối. Quá trình kết hợp được thực hiện bằng cách XOR từng bít của khóa con với khối dữ liệu.

Xem thêm: Rijndael mix columns.

Tối ưu hóa

Đối với các hệ thống 32 bít hoặc lớn hơn, ta có thể tăng tốc độ thực hiện thuật toán bằng cách sáp nhập các bước SubBytes, ShiftRows, MixColumns và chuyển chúng thành dạng bảng. Có cả thảy bốn bảng với 256 mục, mỗi mục là 1 từ 32 bít, bốn bảng này chiếm 4096 byte trong bộ nhớ. Khi đó, mỗi chu trình sẽ được bao gồm 16 lần tra bảng và 12 lần thực hiện phép XOR 32 bít cùng với 4 phép XOR trong bước AddRoundKey.

Trong trường hợp kích thước các bảng vẫn lớn so với thiết bị thực hiện thì chỉ dùng một bảng và tra bảng kết hợp với hoán vị vòng quanh.

Tài liệu tham khảo

WikiPedia: Advanced Encryption Standard http://www.iaik.tu-graz.ac.at/research/krypto/AES/ http://www.iaik.tu-graz.ac.at/research/krypto/AES/... http://www.esat.kuleuven.ac.be/~rijmen/rijndael/ http://www.esat.kuleuven.ac.be/~rijmen/rijndael/ri... http://groups.google.com/groups?selm=42620794@news... http://www.macfergus.com/pub/rdalgeq.html http://fp.gladman.plus.com/cryptography_technology... http://www.quadibloc.com/crypto/co040401.htm http://www.schneier.com/paper-rijndael.html http://www.cs.eku.edu/faculty/styer/460/Encrypt/JS...